home *** CD-ROM | disk | FTP | other *** search
- Frequently Asked Questions (FAQS);faqs.355
-
-
-
- * DEFCONSTANT has several potentially unexpected properties:
-
- - Once a name has been declared constant, it cannot be used a
- the name of a local variable (lexical or special) or function
- parameter. Really. See page 87 of CLtL2.
-
- - A DEFCONSTANT cannot be re-evaluated (eg, by reloading the
- file in which it appears) unless the new value is EQL to the
- old one. Strictly speaking, even that may not be allowed.
- (DEFCONSTANT is "like DEFPARAMETER" and hence does an
- assignment, which is not allowed if the name has already
- been declared constant by DEFCONSTANT.)
-
- Note that this makes it difficult to use anything other
- than numbers, symbols, and characters as constants.
-
- - When compiling (DEFCONSTANT name form) in a file, the form
- may be evaluated at compile-time, load-time, or both.
-
- (You might think it would be evaluated at compile-time and
- the _value_ used to obtain the object at load-time, but it
- doesn't have to work that way.)
-
- Declarations:
-
- * You often have to declare the result type to get the most
- efficient arithmetic. Eg,
-
- (the fixnum (+ (the fixnum e1) (the fixnum e2)))
-
- rather than
-
- (+ (the fixnum e1) (the fixnum e2))
-
- * Declaring the iteration variable of a DOTIMES to have type FIXNUM
- does not guarantee that fixnum arithmetic will be used. That is,
- implementations that use fixnum-specific arithmetic in the presence
- of appropriate declaration may not think _this_ declaration is
- sufficient. It may help to declare that the limit is also a
- fixnum, or you may have to write out the loop as a DO and add
- appropriate declarations for each operation involved.
-
- FORMAT related errors:
-
- * When printing messages about files, filenames like foo~ (a GNU-Emacs
- backup file) may cause problems with poorly coded FORMAT control
- strings.
-
- * Beware of using an ordinary string as the format string,
- i.e., (format t string), rather than (format t "~A" string).
-
- Miscellaneous:
-
- * Be careful of circular lists and shared list structure.
-
- * Watch out for macro redefinitions.
-
- * If you use (SETF (SYMBOL-FUNCTION 'foo) ...) to change the definition of
- a built-in Lisp function named FOO, be aware that this may not work
- correctly (i.e., as desired) in compiled code in all Lisps. In some Lisps,
- the compiler treats certain symbols in the LISP package specially,
- ignoring the function definition.
-
- * A NOTINLINE may be needed if you want SETF of SYMBOL-FUNCTION to
- affect calls within a file. (See CLtL2, page 686.)
-
- * When dividing two numbers, beware of creating a rational number where
- you intended to get an integer or floating point number. Use TRUNCATE
- or ROUND to get an integer and FLOAT to ensure a floating point
- number. This is a major source of errors when porting ZetaLisp or C
- code to Common Lisp.
-
- * If your code doesn't work because all the symbols are mysteriously
- in the keyword package, one of your comments has a colon (:) in
- it instead of a semicolon (;).
-
- ----------------------------------------------------------------
- [3-12] When is it right to use EVAL?
-
- Hardly ever. Any time you think you need to use EVAL, think hard about it.
- EVAL is useful when implementing a facility that provides an external
- interface to the Lisp interpreter. For instance, many Lisp-based editors
- provide a command that prompts for a form and displays its value.
- Inexperienced macro writers often assume that they must explicitly EVAL the
- subforms that are supposed to be evaluated, but this is not so; the correct
- way to write such a macro is to have it expand into another form that has
- these subforms in places that will be evaluated by the normal evaluation
- rules. Explicit use of EVAL in a macro is likely to result in one of two
- problems: the dreaded "double evaluation" problem, which may not show up
- during testing if the values of the expressions are self-evaluating
- constants (such as numbers); or evaluation at compile time rather than
- runtime. For instance, if Lisp didn't have IF and one desired to write it,
- the following would be wrong:
-
- (defmacro if (test then-form &optional else-form)
- ;; this evaluates all the subforms at compile time, and at runtime
- ;; evaluates the results again.
- `(cond (,(eval test) ,(eval then-form))
- (t ,(eval else-form))))
-
- (defmacro if (test then-form &optional else-form)
- ;; this double-evaluates at run time
- `(cond ((eval ,test) (eval ,then-form))
- (t (eval ,else-form)))
-
- This is correct:
-
- (defmacro if (test then-form &optional else-form)
- `(cond (,test ,then-form)
- (t ,else-form)))
-
- On the other hand, EVAL can sometimes be necessary when the only portable
- interface to an operation is a macro.
-
- ----------------------------------------------------------------
- [3-13] Why does my program's behavior change each time I use it?
-
- Most likely your program is altering itself, and the most common way this
- may happen is by performing destructive operations on embedded constant
- data structures. For instance, consider the following:
-
- (defun one-to-ten-except (n)
- (delete n '(1 2 3 4 5 6 7 8 9 10)))
- (one-to-ten-except 3) => (1 2 4 5 6 7 8 9 10)
- (one-to-ten-except 5) => (1 2 4 6 7 8 9 10) ; 3 is missing
-
- The basic problem is that QUOTE returns its argument, *not* a copy of
- it. The list is actually a part of the lambda expression that is in
- ONE-TO-TEN-EXCEPT's function cell, and any modifications to it (e.g., by
- DELETE) are modifications to the actual object in the function definition.
- The next time that the function is called, this modified list is used.
-
- In some implementations calling ONE-TO-TEN-EXCEPT may even result in
- the signalling of an error or the complete aborting of the Lisp process. Some
- Lisp implementations put self-evaluating and quoted constants onto memory
- pages that are marked read-only, in order to catch bugs such as this.
- Details of this behavior may vary even within an implementation,
- depending on whether the code is interpreted or compiled (perhaps due to
- inlined DEFCONSTANT objects).
-
- All of these behaviors are allowed by the draft ANSI Common Lisp
- specification, which specifically states that the consequences of modifying
- a constant are undefined (X3J13 vote CONSTANT-MODIFICATION:DISALLOW).
-
- To avoid these problems, use LIST to introduce a list, not QUOTE. QUOTE
- should be used only when the list is intended to be a constant which
- will not be modified. If QUOTE is used to introduce a list which will
- later be modified, use COPY-LIST to provide a fresh copy.
-
- For example, the following should all work correctly:
-
- o (remove 4 (list 1 2 3 4 1 3 4 5))
- o (remove 4 '(1 2 3 4 1 3 4 5)) ;; Remove is non-destructive.
- o (delete 4 (list 1 2 3 4 1 3 4 5))
- o (let ((x (list 1 2 4 1 3 4 5)))
- (delete 4 x))
- o (defvar *foo* '(1 2 3 4 1 3 4 5))
- (delete 4 (copy-list *foo*))
- (remove 4 *foo*)
- (let ((x (copy-list *foo*)))
- (delete 4 x))
-
- The following, however, may not work as expected:
-
- o (delete 4 '(1 2 3 4 1 3 4 5))
-
- ----------------------------------------------------------------
- [3-14] When producing formatted output in Lisp, where should you put the
- newlines (e.g., before or after the line, FRESH-LINE vs TERPRI,
- ~& vs ~% in FORMAT)?
-
-
- Where possible, it is desirable to write functions that produce output
- as building blocks. In contrast with other languages, which either
- conservatively force a newline at various times or require the program
- to keep track of whether it needs to force a newline, the Lisp I/O
- system keeps track of whether the most recently printed character was
- a newline or not. The function FRESH-LINE outputs a newline only if
- the stream is not already at the beginning of a line. TERPRI forces a
- newline irrespective of the current state of the stream. These
- correspond to the ~& and ~% FORMAT directives, respectively. (If the
- Lisp I/O system can't determine whether it's physically at the
- beginning of a line, it assumes that a newline is needed, just in case.)
-
- Thus, if you want formatted output to be on a line of its own, start
- it with ~& and end it with ~%. (Some people will use a ~& also at the
- end, but this isn't necessary, since we know a priori that we're not
- at the beginning of a line. The only exception is when ~& follows a
- ~A, to prevent a double newline when the argument to the ~A is a
- formatted string with a newline at the end.) For example, the
- following routine prints the elements of a list, N elements per line,
- and then prints the total number of elements on a new line:
-
- (defun print-list (list &optional (elements-per-line 10))
- (fresh-line)
- (loop for i upfrom 1
- for element in list do
- (format t "~A ~:[~;~%~]" element (zerop (mod i elements-per-line))))
- (format t "~&~D~%" (length list)))
-
- ----------------------------------------------------------------
- [3-15] I'm using DO to do some iteration, but it doesn't terminate.
-
- Your code probably looks something like
- (do ((sublist list (cdr list))
- ..)
- ((endp sublist)
- ..)
- ..)
- or maybe
- (do ((index start (+ start 2))
- ..)
- ((= index end)
- ..)
- ..)
-
- The problem is caused by the (cdr list) and the (+ start 2) in the
- first line. You're using the original list and start index instead of
- the working sublist or index. Change them to (cdr sublist) and
- (+ index 2) and your code should start working.
-
- ----------------------------------------------------------------
- ;;; *EOF*
- Xref: bloom-picayune.mit.edu comp.lang.lisp:8752 comp.lang.scheme:5783 news.answers:4562
- Path: bloom-picayune.mit.edu!enterpoop.mit.edu!spool.mu.edu!uunet!ogicse!das-news.harvard.edu!cantaloupe.srv.cs.cmu.edu!crabapple.srv.cs.cmu.edu!mkant
- From: mkant+@cs.cmu.edu (Mark Kantrowitz)
- Newsgroups: comp.lang.lisp,comp.lang.scheme,news.answers
- Subject: FAQ: Lisp Implementations and Mailing Lists 4/6 [Monthly posting]
- Summary: Questions about Lisp/Scheme Implementations and Mailing Lists
- Message-ID: <lisp-faq-4.text_724237334@cs.cmu.edu>
- Date: 13 Dec 92 09:02:26 GMT
- Article-I.D.: cs.lisp-faq-4.text_724237334
- Expires: Tue, 26 Jan 1993 09:02:14 GMT
- Sender: news@cs.cmu.edu (Usenet News System)
- Reply-To: lisp-faq@think.com
- Followup-To: poster
- Organization: School of Computer Science, Carnegie Mellon
- Lines: 1010
- Approved: news-answers-request@MIT.Edu
- Supersedes: <lisp-faq-4.text_721645350@cs.cmu.edu>
- Nntp-Posting-Host: a.gp.cs.cmu.edu
-
- Archive-name: lisp-faq/part4
- Last-Modified: Thu Nov 5 19:30:40 1992 by Mark Kantrowitz
- Version: 1.27
-
- ;;; ****************************************************************
- ;;; Answers to Frequently Asked Questions about Lisp ***************
- ;;; ****************************************************************
- ;;; Written by Mark Kantrowitz and Barry Margolin
- ;;; lisp-faq-4.text -- 55661 bytes
-
- This post contains Part 4 of the Lisp FAQ. It is cross-posted to the
- newsgroup comp.lang.scheme because it contains material of interest to
- Scheme people. The other parts of the Lisp FAQ are posted only to the
- newsgroups comp.lang.lisp and news.answers.
-
- If you think of questions that are appropriate for this FAQ, or would
- like to improve an answer, please send email to us at lisp-faq@think.com.
-
- Lisp/Scheme Implementations and Mailing Lists (Part 4):
-
- [4-0] Free Lisp implementations.
- [4-1] Commercial Lisp implementations.
- [4-2] Free Scheme implementations.
- [4-3] Commercial Scheme implementations.
- [4-4] Other Commercial Lisp-like Language implementations.
- [4-5] Where can I get an implementation of Prolog in Lisp?
- [4-6] What is Dylan?
- [4-7] What Lisp-related discussion groups and mailing lists exist?
- [4-8] What are R4RS and IEEE P1178?
- [4-9] How do I do object-oriented programming in Scheme?
-
- Search for [#] to get to question number # quickly.
-
- ----------------------------------------------------------------
- [4-0] Free Lisp implementations.
-
- Repositories of Lisp source code are described in the answer to
- question [6-1].
-
- Remember, when ftping compressed or compacted files (.Z, .arc, .fit,
- etc.) to use binary mode for retrieving the files.
-
- Kyoto Common Lisp (KCL) is free, but requires a license. Conforms to CLtL1.
- KCL was written by T. Yuasa <yuasa@tutics.tut.ac.jp> and M. Hagiya
- <hagiya@is.s.u-tokyo.ac.jp> at Kyoto University. Austin Kyoto Common Lisp
- (AKCL) is a collection of ports, bug fixes and improvements to KCL
- by Bill Schelter (<wfs@cli.com> or <wfs@rascal.ics.utexas.edu>). {A}KCL
- generates C code which it compiles with the local C compiler. Both are
- available by anonymous ftp from rascal.ics.utexas.edu [128.83.138.20],
- cli.com [192.31.85.1], or [133.11.11.11] (a machine in Japan)
- in the directory /pub. KCL is in the file kcl.tar, and AKCL is in the
- file akcl-xxx.tar.Z (take the highest value of xxx). To obtain KCL, one
- must first sign and mail a copy of the license agreement to: Special
- Interest Group in LISP, c/o Taiichi Yuasa, Department of Computer Science,
- Toyohashi University of Technology, Toyohashi 441, JAPAN. Runs on Sparc,
- IBM RT, RS/6000, DecStation 3100, hp300, hp800, Macintosh II (under AUX),
- mp386, IBM PS2, Silicon Graphics 4d, Sun3, Sun4, Sequent Symmetry,
- IBM 370, NeXT and Vax. A port to DOS is in beta test as
- math.utexas.edu:pub/beta2.zip. Commercial versions of {A}KCL are available
- from Austin Code Works, 1110 Leafwood Lane, Austin, TX 78750-3409,
- Tel. 512-258-0785, Fax 512-258-1342, including a CLOS for AKCL.
- See also Ibuki, below.
-
- XLISP is free, and runs on the IBM PC (MSDOS), Amiga (AmigaDOS),
- Atari ST (TOS), Apple Macintosh, and Unix. It should run on
- anything with a C compiler. It was written by David Michael Betz,
- 167 Villa Avenue #11, Los Gatos, CA 95032, 408-354-9303 (H),
- 408-862-6325 (W), dbetz@apple.com. The reference manual was
- written by Tim Mikkelsen. Version 2.0 is available by anonymous ftp from
- cs.orst.edu:/pub/xlisp/ [128.193.32.1] or
- sumex-aim.stanford.edu:info-mac/lang/
- Version 2.1 is the same as XLISP 2.0, but modified to bring it closer
- to Common Lisp and with several bugs fixed. It can be obtained by
- anonymous ftp from
- glia.biostr.washington.edu:/pub/xlisp 128.95.10.115
- wasp.eng.ufl.edu:/pub 128.227.116.1
- as the files xlisp21e.zip and xlisp21e.tar.Z. The xlisp21e.zip file comes
- with IBM/PC executables. For obtaining a copy through US mail, send
- email to Tom Almy, toma@sail.labs.tek.com.
-
- CMU Common Lisp is free, and runs on Sparcs (Mach and SunOs),
- DecStation 3100 (Mach), IBM RT (Mach) and requires 16mb RAM, 25mb
- disk. It includes an incremental compiler, Hemlock emacs-style editor,
- source-code level debugger, code profiler and is mostly X3J13
- compatible, including the new loop macro. It is available by anonymous
- ftp from any CMU CS machine, such as ftp.cs.cmu.edu [128.2.206.173], in the
- directory /afs/cs.cmu.edu/project/clisp/release. Login with username
- "anonymous" and "userid@host" (your email address) as password. Due to
- security restrictions on anonymous ftps (some of the superior
- directories on the path are protected against outside access), it is
- important to "cd" to the source directory with a single command.
- Don't forget to put the ftp into binary mode before using "get" to
- obtain the compressed/tarred files. The binary releases are
- contained in files of the form
- <version>-<machine>_<os>.tar.Z
- Other files in this directory of possible interest are
- 16e-source.tar.Z, which contains all the ".lisp" source files
- used to build version 16e. A listing of the current contents of the
- release area is in the file FILES. You may also use "dir" or "ls" to
- see what is available. Bug reports should be sent to cmucl-bugs@cs.cmu.edu.
-
- PC LISP is a Lisp interpreter for IBM PCs (MSDOS) available from any
- site that archives the group comp.binaries.ibm.pc, such as
- ix1.cc.utexas.edu:/microlib/pc/languages/pc-lisp/ps-lisp.arc
- wuarchive.wustl.edu:/mirrors/msdos/lisp/pclisp30.zip
- ucdavis.ucdavis.edu:/pub/pclisp30.zip
- PC-LISP is a Franz LISP dialect and is by no means Common LISP
- compatible. It is also available directly from the author by sending
- 2 blank UNFORMATTED 360K 48TPI IBM PC diskettes, a mailer and
- postage to: Peter Ashwood-Smith, 8 Du Muguet, Hull, Quebec, CANADA,
- J9A-2L8; phone 819-595-9032 (home). Source code is available from the
- author for $15.
-
- WCL is an implementation of Common Lisp for Sparc based workstations.
- It is available free by anonymous ftp from sunrise.stanford.edu in the
- pub/wcl directory. The file wcl-2.14.tar.Z contains the WCL
- distribution, including CLX and PCL; wgdb-4.2.tar.Z contains a version
- of the GDB debugger which has been modified to grok WCL's Lisp; and
- gcc-2.1.tar.Z contains the GNU C compiler (2.2.2 does not work!). WCL
- provides a large subset of Common Lisp as a Unix shared library that
- can be linked with Lisp and C code to produce efficient and small
- applications. WCL provides CLX R5 as a shared library, and comes with
- PCL and a few other utilities. For further information on WCL, see
- the paper published in the proceedings of the 1992 Lisp and Functional
- Programming Conference, a copy of which appears in the wcl directory
- as lfp-paper.ps, or look in the documentation directory of the WCL
- distribution. Written by Wade Hennessey <wade@leland.stanford.edu>.
- Please direct any questions to wcl@sunrise.stanford.edu.
- If you would like to be added to a mailing list for information about
- new releases, send email to wcl-request@sunrise.stanford.edu.
-
- CLISP is a Common Lisp (CLtL1) implementation by Bruno Haible and
- Michael Stoll of Karlsruhe University in Germany. German and English
- versions are available. It runs on Atari-ST, DOS, Linux, and Sun4
- (SunOS 4.1.1), An OS/2 port is in progress. CLISP is for non-profit
- use at universities and at home, not at companies. It includes an
- interpreter and a compiler. It runs in 1.5mb of memory. Some of the
- implementations may be slightly buggy. Some include PCL; others
- include only Closette. Available by anonymous ftp from
- ma2s2.mathematik.uni-karlsruhe.de [129.13.115.2] in the directory
- /pub/lisp/clisp. For more information, contact
- haible@ma2s2.mathematik.uni-karlsruhe.de.
-
- ----------------------------------------------------------------
- [4-1] Commercial Lisp implementations.
-
- Macintosh Common Lisp (MCL 2.0) runs on the Apple Macintosh (Mac+ or
- higher with 4mb RAM and system software 6.0.4 or later or AUX 3.0) and
- is available from APDA for $495. It includes a native CLOS Macintosh
- Toolbox/interface toolkit, ephemeral garbage collection, incremental
- compiler, window-based debugger, source-code stepper, object
- inspector, emacs-style editor, and a foreign function interface. With
- MCL version 2.0, Apple has started distributing a CD-ROM which
- contains, among other things, a large collection of Lisp code,
- complete MCL manuals in an online-browser format, the CLIM 1.0 manual
- in TeX and postscript, and copies of Gambit 1.8 Scheme, SIOD 2.8
- Scheme, Pixie Scheme, and a demo version of MacScheme. For more
- information, write to: APDA, Apple Computer Inc., 20525 Mariani
- Avenue, MS 33-G, Cupertino, CA 95014-6299 or call toll free
- 1-800-282-2732 (US), 1-800-637-0029 (Canada), 1-408-562-3910. Their
- fax number is 1-408-562-3971 and their telex is 171-576. Email may
- also be sent to APDA@applelink.apple.com. CLIM for MCL is available
- as a separate product from Lucid, Inc., 707 Laurel Street, Menlo Park,
- CA 94025 U.S.A., 415-329-8400, fax: 415-329-8480, <sales@lucid.com>.
-
- Procyon Common Lisp runs on either the Apple Macintosh or IBM PC (386/486
- or OS/2 native mode), costing 450 pounds sterling ($675) educational,
- 1500 pounds ($2250) commercial. It requires 2.5mb RAM on the Macintosh
- and 4mb RAM on PCs (4mb and more than 4mb recommended respectively). It
- is a full graphical environment, and includes a native CLOS with
- meta-object protocol, incremental compilation, foreign function
- interface, object inspector, text and structure editors, and debugger.
- Write to: Scientia Ltd., St. John's Innovation Centre, Cowley Road,
- Cambridge, CB4 4WS, UK, with phone +44-223-421221, fax +44-223-421218,
- and email UK0061@applelink.apple.com. An alternate address for US
- customers is: ExperTelligence, Inc., 5638 Hollister Ave, Suite 302,
- Goleta, CA 93117, or call 1-800-828-0113, (805) 967-1797. Their fax is
- (805) 964-8448 and email is D2042@applelink.apple.com. [The rights to the
- MS Windows version of Procyon were sold to Franz who are marketing and
- developing it as Allegro CL\PC. See Allegro's entry for more
- information.]
-
- Franz Lisp 2.0 runs on the Apple Macintosh, requiring 1mb RAM for the
- interpreter ($99) and 2.5mb RAM for the compiler ($199). Student prices
- are $60 for the interpreter and $110 for the interpreter and compiler.
- Includes editor and language reference manual. Complete sources are
- available for $649. The ALJABR symbolic mathematics system costs $249.
- Write to: Fort Pond Research, 15 Fort Pond Road, Acton, MA 01720,
- call 1-508-263-9692, or send mail to order@fpr.com.
-
- Allegro Common Lisp 4.1 runs on a variety of platforms, including
- Sparcs, RS6000, HP700, Silicon Graphics, DecStation (prices start at
- $4,500) and NeXT ($2,000). It requires 12mb RAM for the 680x0 and 16mb
- for RISC. It includes native CLOS, X-windows support, Unix interface,
- incremental compilation, generational garbage collection, and a
- foreign function interface. Options include Allegro Composer
- (development environment, including debugger, inspector, object
- browser, time/space code profiler, and a graphical user interface),
- Common LISP Interface Manager (CLIM is a Symbolic's Dynamic Windows
- clone) and Allegro CLIP (a parallel version of Lisp for the Sequent).
- Franz has bought the rights to the Windows version of Procyon CL, and
- are now marketing it as Allegro CL\PC for Windows 3.1. Write to:
- Franz Inc., 1995 University Avenue, Berkeley, CA 94704 or call (510)
- 548-3600 (area code was 415), fax (510) 548-8253, telex 340179
- WUPUBTLXSFO. Bug reports can be mailed to bugs@franz.com. Questions
- about Franz Inc. products (e.g., current and special pricing) can be
- sent to info@franz.com.
-
- Ibuki Common Lisp is a commercialized and improved version of Kyoto
- Common Lisp. It runs on over 30 platforms, including Sun3, Sparc, Dec
- (Ultrix), Apollo, HP 9000, IBM RS/6000, Silicon Graphics and IBM PCs.
- It includes an incremental compiler, interpreter, foreign function
- interface. It generates C code from the Lisp and compiles it using the
- local C compiler. Image size is about 3mb. Cost is $2800 (workstations),
- $3500 (servers), $700 (IBM PCs). Supports CLOS and CLX ($200 extra).
- Source code is available at twice the cost. Ibuki now also has a product
- called CONS which compiles Lisp functions into linkable Unix libraries.
- Write to: Ibuki Inc., PO Box 1627, Los Altos, CA 94022, or call
- 415-961-4996, fax 415-961-8016, or send email to Richard Weyhrauch,
- rww@ibuki.com.
-
- Lucid Common Lisp runs on a variety of platforms, including PCs (AIX),
- Apollo, HP, Sun-3, Sparc, IBM RT, IBM RS/6000, Decstation 3100,
- Silicon Graphics, and Vax, and costs $2500 (IBM PCs), $4400 (other
- platforms). Lucid includes native CLOS, a foreign function interface,
- and generational garbage collection. CLIM is available for Lucid as
- a separate product. Write to Lucid Inc., 707 Laurel Street, Menlo Park,
- CA 94025, call toll free 800-225-1386 (or 800-843-4204), 415-329-8400,
- fax 415-329-8480, or email to sales@lucid.com for information on pricing,
- product availability, etc. Technical questions may be addressed to
- customer-support@lucid.com. See also the comments in question [1-1]
- on the wizards.doc file that comes with the release.
-
- Medley is a Common Lisp development environment that includes a native
- CLOS w/MOP, window toolkit, window-based debugger, incremental
- compiler, structure editor, inspectors, stepper, cross-referencer,
- code analysis tools, and browsers. It is the successor to InterLisp-D.
- It runs on a variety of platforms, including Suns, DecStations,
- 386/486s, IBM RS/6000, MIPS, HP, and Xerox 1186. Requires Unix and 8mb
- RAM. Developer version costs $995 and run-time version $300.
- Instructional costs $250/copy or $1250 site license. Write to: Venue,
- 1549 Industrial Rd, San Carlos, CA 94070, call 1-800-228-5325,
- 1-415-508-9672, fax 415-508-9770, or email
- aisupport.mv@envos.xerox.com.
-
- Golden Common Lisp (GCLisp) runs on IBM PCs under DOS and Windows,
- costing $2,000 ($250 extra for Gold Hill Windows), and includes an
- incremental compiler, foreign function interface, interactive
- debugger, and emacs-like editor. It supports DDE and other Windows
- stuff, and is CLtL1 compatible. Supports PCL. It requires 4mb RAM,
- and 12mb disk. See a review in PC-WEEK 4/1/91 comparing GCLisp with
- an older version of MCL. Write to: Gold Hill Computers, 26 Landsdowne
- Street, Cambridge, MA 02139, call (617) 621-3300, or fax (617) 621-0656.
-
- Star Sapphire Common LISP provides a subset of Common Lisp and includes
- an emacs-like editor, compiler, debugger, DOS graphics and CLOS. It
- runs on IBM PCs (MSDOS), requires 640k RAM, a hard disk, and costs $100.
- Write to: Sapiens Software Corporation, PO Box 3365,
- Santa Cruz, CA 95063-3365, call (408) 458-1990, or fax (408) 425-0905.
- Sapiens Software also has a Lisp-to-C translator in beta-test.
-
- NanoLISP is a Lisp interpreter for DOS systems that supports a
- large subset of the Common Lisp standard, including lexical and
- dynamic scoping, four lambda-list keywords, closures, local functions,
- macros, output formatting, generic sequence functions, transcendental
- functions, 2-d arrays, bit-arrays, sequences, streams, characters
- double-floats, hash-tables and structures. Runs in DOS 2.1 or higher,
- requiring only 384k of RAM. Cost is $100. Write to: Microcomputer Systems
- Consultants, PO Box 6646, Santa Barbara, CA 93160 or call (805) 967-2270.
-
- Software Engineer is a Lisp for Windows that creates small stand-alone
- executables. It is a subset of Common Lisp, but includes CLOS. It
- requires 2mb RAM, but can use up to 16mb of memory, generating 286
- specific code. It costs $250. Write to: Raindrop Software, 833
- Arapaho Road, Suite 104, Richardson, TX 75081, call (214) 234-2611, or
- fax (214) 234-2674.
-
- muLISP-90 is a small Lisp which runs on IBM PCs (or the HP 95LX
- palmtop), MS-DOS version 2.1 or later. It isn't Common Lisp, although
- there is a Common Lisp compatibility package which augments muLISP-90
- with over 450 Common Lisp special forms, macros, functions and control
- variables. Includes a screen-oriented editor and debugger, a window
- manager, an interpreter and a compiler. Among the example programs is
- DOCTOR, an Eliza-like program. The runtime system allows one to create
- small EXE or COM executables. Uses a compact internal representation
- of code to minimize space requirements and speed up execution. The
- kernel takes up only 50k of space. Costs $400. Write to Soft
- Warehouse, Inc., 3660 Waialae Avenue, Suite 304, Honolulu, HI
- 96816-3236, call 1-808-734-5801, or fax 1-808-735-1105.
-
- CLOE (Common Lisp Operating Environment) is a cross-development
- environment for IBM PCs (MSDOS) and Symbolics Genera. It includes
- CLOS, condition error system, generational garbage collection,
- incremental compilation, code time/space profiling, and a stack-frame
- debugger. It costs from $625 to $4000 and requires 4-8mn RAM and a 386
- processor. Write to: Symbolics, 6 New England Tech Center,
- 521 Virginia Road, Concord, MA 01742, call 1-800-394-5522 or
- 508-287-1000 or fax 508-287-1099.
-
- Top Level Common Lisp includes futures, a debugger, tracer, stepper,
- foreign function interface and object inspector. It runs on Unix
- platforms, requiring 8mb RAM, and costs $687. Write to: Top Level,
- 100 University Drive, Amherst, MA 01002, call (413) 549-4455, or fax
- (413) 549-4910.
-